home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
answrbok
/
7_10.lha
/
7_10
/
stackdir.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-08-08
|
998b
|
43 lines
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
ifndef STACKDIR_H
define STACKDIR_H
lass stackdir
int dir;
ublic:
stackdir();
// Return a pointer to a local variable
// beyond the current stack frame.
char *plusone();
char *plustwo();
// T if the stack grows up
int grows_up()
{ return dir; }
// Subtract two pointers as if the stack grew up.
// a-b = >0 if a>b
// 0 if a==b
// <0 if a<b
int diff(void *a, void *b)
{
return grows_up() ?
((char*)a - (char*)b):
((char*)b - (char*)a);
}
// Compare two pointers as if the stack grew up.
int less(void *a, void *b) { return diff(a,b) < 0; }
int lesseq(void *a, void *b) { return diff(a,b) <= 0; }
int greater(void *a, void *b) { return diff(a,b) > 0; }
int greatereq(void *a, void *b) { return diff(a,b) >= 0; }
;
xtern stackdir Stackdir;
endif /* STACKDIR_H */